home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
dviware
/
dvi2pcl
/
openpkfile.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-24
|
3KB
|
92 lines
/* $Log: openpkfile.c,v $
* Revision 0.8 92/11/23 19:46:50 19:46:50 bt (Bo Thide')
* Fixed resolution bug. Portable downloading. Added/changed options. PJXL color support
*
* Revision 0.7 92/11/13 02:41:35 02:41:35 bt (Bo Thide')
* More bug fixes and improvements. Support for PaintJet XL
*
* Revision 0.6 92/11/10 21:47:51 21:47:51 bt (Bo Thide')
* Bug fixes. Added -R option. Better font handling.
*
* Revision 0.5 92/11/09 16:25:38 16:25:38 bt (Bo Thide')
* Rewrite of dospecial.c. Extended \special support
*
* Revision 0.4 92/11/08 02:45:54 02:45:54 bt (Bo Thide')
* Changed to portable bit manipulations. Replaced strrstr for non-POSIX compliant C. Fixed numerous bugs. Added support for more \special's.
*
* Revision 0.3 92/08/24 12:45:45 12:45:45 bt (Bo Thide')
* Fixed 8 bit (dc font) support.
*
* Revision 0.2 92/08/23 17:28:58 17:28:58 bt (Bo Thide')
* Source cleaned up. Changed certain function calls. Removed globals.
*
* Revision 0.1 92/08/22 23:58:48 23:58:48 bt (Bo Thide')
* First Release.
* */
#include <stdio.h>
#include <string.h>
#include "globals.h"
#include "paths.h"
static char rcsid[] = "$Header: openpkfile.c,v 0.8 92/11/23 19:46:50 bt Exp $";
FILE *openpkfile()
{
FILE *fileptr;
char *fptr, *nptr, *pptr;
char *pt_chrs = "0123456789", *pt_ptr;
int pt_value;
nptr = &names[font->name];
fptr = pkname;
pptr = fontpath;
if(*nptr)
while(*nptr)
*fptr++ = *nptr++;
else
while(*pptr)
*fptr++ = *pptr++;
nptr++;
/* Find the pt size from the font name string */
pt_ptr = strpbrk(nptr, pt_chrs);
sscanf(pt_ptr, "%d", &pt_value);
/* Look for the pk fonts in pk300/10pt/cmr10.300pk etc.*/
sprintf(fptr,"/%dpt/%s.%dpk", pt_value, nptr, font->dir_size);
/* Try to open pk font file */
if((fileptr = fopen(pkname,"r")) != NULL)
return fileptr;
/* Look for the pk fonts in pk300/cmr10.300pk etc.*/
sprintf(fptr,"/%s.%dpk", nptr, font->dir_size);
if((fileptr = fopen(pkname,"r")) != NULL)
return fileptr;
fprintf(stderr,"Cannot find pk font file %s\n",pkname);
/* Try to substitute at base resolution */
font->dir_size = pt_value = RESOLUTION;
sprintf(fptr, "/%dpt/%s.%dpk", pt_value,nptr, font->dir_size);
if((fileptr = fopen(pkname,"r")) != NULL){
fprintf(stderr,"Substituting %s at %d points\n", nptr,pt_value);
return fileptr;
}
sprintf(fptr, "/%s.%dpk",nptr,font->dir_size);
if((fileptr = fopen(pkname,"r")) != NULL){
fprintf(stderr,"Substituting %s at %d points\n", nptr,pt_value);
return fileptr;
}
fprintf(stderr,"Substituting cmr10 at ten points . . .\n");
if ((fileptr = fopen(defaultpk,"r")) != NULL)
return 0;
fprintf(stderr, "Killed in openpkfile()\n");
exit(-1);
}